package com.sky;

//import java.util.ServiceLoader;

import com.sun.xml.internal.ws.api.pipe.NextAction;
import sun.nio.ch.Net;

/**
 * @author : wushikai
 * <p>
 * date : 2021/8/5
 */
public class Application {

    static String init;

    static {
        int j = 0;

        j = 1;

        //   System.out.println( j );

        init = "shit";
    }


    public static void test() {


        int i = 0;

        i = 1;

        //  System.out.println( i );


    }



    /**
     * 演示一波什么是 serviceLoader ,  并且 serviceLoader 是干嘛用的;
     * 结果:
     * com.sky.Dog
     * 你汪我汪大家汪,  汪汪!!!
     * ------------------------------------------
     * com.sky.Cat
     * 我们一起学猫叫, 一起喵喵喵喵喵!!!
     * ------------------------------------------
     * <p>
     * <p>
     * 由此可以知道,  serviceLoader 就是把 某个接口的 实现类通过一定的规范全都找出来
     */
    public static void demo() {

        MyServiceLoader<IShout> serviceLoaderList = MyServiceLoader.load(IShout.class);  //仅仅是进行初始化而已, 注意这个时候, serviceLoader 并没有去加载 接口 的实现类
        for (IShout s : serviceLoaderList) {
            System.out.println(s.getClass().getCanonicalName());
            s.shout();
            System.out.println("------------------------------------------");
        }
    }

    public static void demo1() {

        MyServiceLoader<IShout> serviceLoaderList = MyServiceLoader.load(IShout.class);

        IShout next = serviceLoaderList.iterator().next();

        next.shout();

        IShout next1 = serviceLoaderList.iterator().next();

        next1.shout();

    }

    public static void main(String[] args) {

        demo();

    }
}
